home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / w3dvb5 / d3.bas < prev    next >
BASIC Source File  |  1997-12-22  |  3KB  |  124 lines

  1. Attribute VB_Name = "D3"
  2. ' Modulo per la rappresentazione e il
  3. ' calcolo dei vettori tridimensionali
  4.  
  5. 'NB.: Non tutte le Sub e Function definite in questo
  6. '     modulo sono effettivamente utilizzate dal programma.
  7. '     Sono comunque presenti per facilitare eventuali
  8. '     implementazioni
  9.  
  10.  
  11. Type Vec3
  12.     x As Single
  13.     Y As Single
  14.     Z As Single
  15. End Type
  16.  
  17. ' Variabili in Coeff
  18.  
  19. Public v11 As Double
  20. Public v12 As Double
  21. Public v13 As Double
  22. Public v21 As Double
  23. Public v22 As Double
  24. Public v23 As Double
  25. Public v32 As Double
  26. Public v33 As Double
  27. Public v43 As Double
  28.  
  29.  
  30. ' Variabili Globali Tridimensionali
  31.  
  32. Public ObjPoint As Vec3
  33.  
  34. Sub Coeff(rho As Double, Theta As Double, Phi As Double)
  35.  
  36.  Dim costh As Double
  37.  Dim sinth As Double
  38.  Dim cosph As Double
  39.  Dim sinph As Double
  40.    
  41. '   Angoli in radianti:
  42.    
  43.  costh = Cos(Theta)
  44.  sinth = Sin(Theta)
  45.  cosph = Cos(Phi)
  46.  sinph = Sin(Phi)
  47.  v11 = -sinth
  48.  v12 = -cosph * costh
  49.  v13 = -sinph * costh
  50.  v21 = costh
  51.  v22 = -cosph * sinth
  52.  v23 = -sinph * sinth
  53.  v32 = sinph
  54.  v33 = -cosph
  55.  v43 = rho
  56.  
  57. End Sub
  58.  
  59. Function CopyVec3(v As Vec3) As Vec3
  60.          CopyVec3 = v
  61. End Function
  62.  
  63. Function AssignVec3(x As Double, Y As Double, Z As Double) As Vec3
  64.     AssignVec3.x = x
  65.     AssignVec3.Y = Y
  66.     AssignVec3.Z = Z
  67. End Function
  68.  
  69. Function DotProduct(a As Vec3, b As Vec3) As Double
  70.  
  71.    DotProduct = a.x * b.x + a.Y * b.Y + a.Z * b.Z
  72.  
  73. End Function
  74.  
  75. Sub Eyecoord(pw As Vec3, pe As Vec3)
  76.  
  77.  
  78.   pe.x = v11 * pw.x + v21 * pw.Y
  79.   pe.Y = v12 * pw.x + v22 * pw.Y + v32 * pw.Z
  80.   pe.Z = v13 * pw.x + v23 * pw.Y + v33 * pw.Z + v43
  81.  
  82.  
  83. End Sub
  84.  
  85. Function SommaVec3(u As Vec3, v As Vec3) As Vec3
  86.    SommaVec3.x = u.x + v.x
  87.    SommaVec3.Y = u.Y + v.Y
  88.    SommaVec3.Z = u.Z + v.Z
  89. End Function
  90.  
  91. Function IncrVec3(u As Vec3, v As Vec3) As Vec3
  92.    u.x = u.x + v.x
  93.    u.Y = u.Y + v.Y
  94.    u.Z = u.Z + v.Z
  95.    IncrVec3 = u
  96. End Function
  97.  
  98. Function DecrVec3(u As Vec3, v As Vec3) As Vec3
  99.    u.x = u.x - v.x
  100.    u.Y = u.Y - v.Y
  101.    u.Z = u.Z - v.Z
  102.    DecrVec3 = u
  103. End Function
  104.  
  105. Function MultIncVec3(v As Vec3, C As Double) As Vec3
  106.    v.x = C * v.x
  107.    v.Y = C * v.Y
  108.    v.Z = C * v.Z
  109.    MultIncVec3 = v
  110. End Function
  111.  
  112. Function MoltiplicaVec3(C As Double, v As Vec3) As Vec3
  113.    MoltiplicaVec3.x = C * v.x
  114.    MoltiplicaVec3.Y = C * v.Y
  115.    MoltiplicaVec3.Z = C * v.Z
  116. End Function
  117.  
  118. Function SottraiVec3(u As Vec3, v As Vec3) As Vec3
  119.    SottraiVec3.x = u.x - v.x
  120.    SottraiVec3.Y = u.Y - v.Y
  121.    SottraiVec3.Z = u.Z - v.Z
  122. End Function
  123.  
  124.